In the current state of computer systems and software development, there are a wide array of tools used to perform an equally wide array of functions. To accomplish efficient execution of any application development aid deployment, it is widely recognized that there is a need to develop, within the framework of a computer system, the ability to adapt and use the right tool for solving the right problem; depending upon the tool's functionality within the context of the problem.
The ability of a computer system to adapt and use a tool inside its framework depends upon its ability to identify the resources that the tool needs to accomplish the process. Typically, such resources may include the protocol the tool uses to communicate with the system, the functions the tool needs to call from the system's library, the interfaces the tool must develop to identify a common communication platform with the system and other tools, and the files the tool must run itself and the relevant applications. The problem with integrating a tool thus opens up a multitude of complex capabilities that a computer system needs to incorporate in its framework.
Among the various factors needed to address the integration of a tool into a computer system framework as mentioned above, is the ability of a computer system to define and understand the patterns of usage of files during the process in which a tool operates to solve a particular problem (within a particular application). The files used by a tool can be broadly classified into three categories. Configuration files, registry files and data files. The configuration and registry files are usually installed in the system when the tool is used for the first time. The data files on the other hand are used for a wide variety of input/output ("I/O") operations performed by the tool every time it is used. These I/O operations may not always be native to the system and neither would be the files themselves. Hence, to integrate the tools the computer system framework should be able to understand the files used in such operations and transform them into a format native to the system. However, this transformation can best be organized if the system is able to develop capabilities transparent to both the user and the tool. That is, the system should be able to capture a particular tool and use it without modifying the tool in any way. Such an ability, when developed in a generic and open manner, would facilitate integration of tools without the need to reconfigure and manually manipulate a tool to make it accessible to the system and the application's requirements.